#pragma once

#include <string>

namespace lib_wrapper {
    bool exists(const std::string& path);
    bool is_directory(const std::string& path);
    bool create_directory(const std::string& path);
    bool remove(const std::string& path);
    std::string current_path();
    uintmax_t file_size(const std::string& path);
    bool copy_file(const std::string& from, const std::string& to);
    std::string extension(const std::string& path);
    bool create_directories(const std::string& path);
    std::string parent_path(const std::string& path);
    bool rename(const std::string& old_path, const std::string& new_path);
    std::string preferred_separator();
    std::string path_join(const std::string &path1, const std::string &path2);
    template<typename... Paths>
    std::string path_join(const std::string& path1, const std::string& path2, Paths... rest) {
        return path_join(path_join(path1, path2), rest...);
    }
    std::string base_name(const std::string& path);
}
